//options
clear all
set maxvar  32000, permanently
set matsize 11000, permanently
set more off, permanently
global bootstraps 1000
set seed 23

// macros
global klmshare				: env klmshare
global projects				: env projects
global klmperry             : env klmperry
global storageb				: env storageb

global perrydatas       = "${klmperry}/CBA/data/perry/raw"
global perrydata        = "${klmperry}/CBA/data/perry/clean"
global masterinter  	= "${klmshare}/CurrentRAs/FredB/test"
global output           = "${projects}/ece_parenting/tex_files/other"
global dataperry        = "$klmperry/PerryPreschool/Data/Perry_PARI_and_Other_Data/PARI/DATA_PARI/"
global abcjpeanalysis   = "${klmshare}/Data_Central/Abecedarian/data/ABC-CARE/extensions/cba-iv/"
global dataihdp         = "${projects}/ece_parenting/data"
global dataihdp         = "$storageb/dc_data/"

cd  $dataihdp
use ihdp_data, clear
rename _all, lower

replace   bw = bw/1000

// impute iq
replace   stndscor =  iqcage     if stndscor ==.
replace   iqcage   =  stndscor   if iqcage ==.
foreach var of varlist stndscor iqcage { 
	replace `var' = mdi_24cor    if stndscor ==. & iqcage ==.
}
replace   stndscor =  iqcage     if stndscor ==.
replace   iqcage   =  stndscor   if iqcage ==.

destring bwg , replace 

// list relevant variables
global baseline_child      twin sex bw anga black hispanic 
global baseline_mother     mage meduc works married 
global baseline_household  welfare tot_siblings_natural employed_adult
global baseline_economy    employment medinc gpc
global outputs             iqcage stndscor 
global inputs              cum_avg_daycare_36m_sum

// mark all sample
reg $baseline_child
gen sample0 = e(sample)

// mark baseline sample
reg $baseline_child $baseline_mother $baseline_household $baseline_economy $outputs $inputs
gen sample1 = e(sample)

// parenting latents, ages 1 and 3
foreach var of varlist alt_subscale_1_12-alt_subscale_6_12 alt_subscale_1_36-alt_subscale_8_36 {
	summ `var'
	gen  `var'_std = (`var' - r(mean))/r(sd) 																	   if sample1 == 1
}
# delimit
sem (_cons@0 X -> alt_subscale_1_12_std) (_cons@0 X -> alt_subscale_2_12_std) (_cons@0 X -> alt_subscale_3_12_std) 
	(_cons@0 X -> alt_subscale_4_12_std) (_cons@0 X -> alt_subscale_5_12_std) (_cons@0 X -> alt_subscale_6_12_std) if sample1 == 1, method(adf);
predict parenting_age1 if sample1 == 1, latent;
sem (_cons@0 X -> alt_subscale_1_36_std) (_cons@0 X -> alt_subscale_2_36_std) (_cons@0 X -> alt_subscale_3_36_std) (_cons@0 X -> alt_subscale_4_36_std)
	(_cons@0 X -> alt_subscale_5_36_std) (_cons@0 X -> alt_subscale_6_36_std) (_cons@0 X -> alt_subscale_7_36_std) (_cons@0 X -> alt_subscale_8_36_std) if sample1 == 1, 
																																						 cov(e.alt_subscale_1_36_std*e.alt_subscale_2_36_std)
																																						 cov(e.alt_subscale_3_36_std*e.alt_subscale_4_36_std)
																																						 cov(e.alt_subscale_5_36_std*e.alt_subscale_6_36_std)
																																						 cov(e.alt_subscale_7_36_std*e.alt_subscale_8_36_std)
																																						 cov(e.alt_subscale_4_36_std*e.alt_subscale_7_36_std)
																																						 cov(e.alt_subscale_2_36_std*e.alt_subscale_7_36_std) method(adf);		
 predict parenting_age3 if sample1 == 1, latent;
# delimit cr
egen    parenting_ages13 = rowmean(parenting_age1 parenting_age3)

global inputs_std   cum_avg_daycare_36m_sum parenting_ages13
keep   ihdp site tg bwg sample* $baseline_child $baseline_mother $baseline_household $baseline_economy $inputs_std $outputs ppvtstd wasifsiq

// merge in ages 5 and 8
merge 1:1 ihdp using iqchildhoodihdp
keep  if _merge == 3
drop _merge

// impute iq
replace kidppvt5 = wippsif5 if kidppvt5 ==.
replace wippsif5 = kidppvt5 if wippsif5 ==.

replace ppvtstd8 = fsiq8    if ppvtstd8 ==.
replace fsiq8    = ppvtstd8 if fsiq8    ==.

replace ppvtstd  = wasifsiq if ppvtstd  ==.
replace wasifsiq = ppvtstd  if wasifsiq ==.

reg fsiq8 ppvtstd8 kidppvt5 wippsif5 wasifsiq ppvtstd
gen sample2 = e(sample) 

// outcomes
merge 1:1 ihdp using adultihdp
keep if _merge == 3
drop    _merge

// construct "positive" outcomes
replace idle18y         = 1 - idle18y
replace sch_eversped18y = 1 - sch_eversped18y
replace sch_math18y     = 1 - sch_math18y
replace sch_read18y     = 1 - sch_read18y
replace sch_thrp18y     = 1 - sch_thrp18y
replace teen18y         = 1 - teen18y

gen     smoke18 = .
replace smoke18 = 1 if cigs18y >  0  & cigs18y != .
replace smoke18 = 0 if cigs18y == 0 & cigs18y != .
replace smoke18 = 1 - smoke18

gen     absence18 = .
replace absence18 = 0 if sch_dabs18y < 5  & sch_dabs18y != .
replace absence18 = 1 if sch_dabs18y >= 5 & sch_dabs18y != .
replace absence18 = 1 - absence18 

// marking missing
global ed18  sch_eversped18y sch_math18y sch_read18y sch_test18y
global beh18 smoke18 idle18y sch_thrp18y teen18y
egen missing     = rowmiss($ed18 $beh18)

// average
egen avg_outcome_educ18 = rowmean($ed18)        if missing == 0
egen avg_outcome_beh18  = rowmean($beh18)       if missing == 0
egen avg_outcome18      = rowmean(avg_outcome_educ18 avg_outcome_beh18) if missing == 0

// define sample
reg     avg_outcome18 if sample2 == 1
replace sample2 = 0   if e(sample) == 0
replace sample2 = 0   if   sample1 == 0

// lists of outcomes
global iq3    iqcage stndscor
global iq5    kidppvt5 wippsif5
global iq8    ppvtstd8 fsiq8
global iq18   ppvtstd wasifsiq
global niq18  sch_eversped18y sch_read18y sch_math18y sch_test18y avg_outcome_educ18 smoke18 idle18y sch_thrp18y teen18y avg_outcome_beh18 avg_outcome18

// describe by sample
global sample_all          if twin != .
global sample_singletons   if twin == 0
global sample_twins        if twin == 1

// describe
matrix all = J(1,11,.)
foreach var of varlist $iq3 {
	foreach group in all singletons twins {
		bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var' tg ${sample_`group'} & sample1 == 1
		matrix  c`var'_g`group' = e(b)[1,2]
		matrix  b`var'_g`group' = e(b)[1,1]
		matrix se`var'_g`group'      = sqrt(e(V)[1,1])
		matrix  t`var'_g`group'      = abs(b`var'_g`group'[1,1]/se`var'_g`group'[1,1])
		matrix df`var'_g`group' = e(N) - e(rank)
		matrix  p`var'_g`group' = 2*(1 - normal(t`var'_g`group'[1,1]))
		matrix `var'_`group' = [c`var'_g`group',b`var'_g`group',p`var'_g`group'] 
	}

}
gen singleton = 1 - twin
foreach var of varlist $iq3 {
	gen  `var'_hip1 = `var' if sample1 == 1
	foreach sib in 0 1 {
		summ    `var'_hip1                        if tg == 0 & twin == `sib' & sample1 == 1
		replace `var'_hip1 = `var'_hip1 - r(mean) if twin == `sib'           & sample1 == 1
	}
	bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var'_hip1 singleton if tg == 1  & sample1 == 1
	matrix  b`var'_hip1 = e(b)[1,1]
	matrix se`var'_hip1 = sqrt(e(V)[1,1])
	matrix  t`var'_hip1 = abs(b`var'_hip1[1,1]/se`var'_hip1[1,1])
	matrix df`var'_hip1 = e(N) - e(rank)
	matrix  p`var'_hip1 = 2*(1 - normal(t`var'_hip1[1,1]))
	
	matrix `var'_hip1 = [b`var'_hip1,p`var'_hip1]
	
	matrix `var' = [`var'_singletons,`var'_twins,`var'_all,`var'_hip1]
	matrix all = [all \ `var']
}
foreach var of varlist $iq5 $iq8 $iq18  $niq18 {
	foreach group in all singletons twins {
		bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var' tg ${sample_`group'} & sample2 == 1
		matrix  c`var'_g`group' = e(b)[1,2]
		matrix  b`var'_g`group' = e(b)[1,1]
		matrix se`var'_g`group'      = sqrt(e(V)[1,1])
		matrix  t`var'_g`group'      = abs(b`var'_g`group'[1,1]/se`var'_g`group'[1,1])
		matrix df`var'_g`group' = e(N) - e(rank)
		matrix  p`var'_g`group' = 2*(1 - normal(t`var'_g`group'[1,1]))
		matrix `var'_`group' = [c`var'_g`group',b`var'_g`group',p`var'_g`group'] 
	}
}
foreach var of varlist $iq5 $iq8 $iq18  $niq18 {
	gen  `var'_hip1 = `var' if sample2 == 1
	foreach sib in 0 1 {
		summ    `var'_hip1                        if tg == 0 & twin == `sib' & sample2 == 1
		replace `var'_hip1 = `var'_hip1 - r(mean) if twin == `sib'           & sample2 == 1
	}
	bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var'_hip1 singleton if tg == 1  & sample2 == 1
	matrix  b`var'_hip1 = e(b)[1,1]
	matrix se`var'_hip1 = sqrt(e(V)[1,1])
	matrix  t`var'_hip1 = abs(b`var'_hip1[1,1]/se`var'_hip1[1,1])
	matrix df`var'_hip1 = e(N) - e(rank)
	matrix  p`var'_hip1 = 2*(1 - normal(t`var'_hip1[1,1]))
	
	matrix `var'_hip1 = [b`var'_hip1,p`var'_hip1]
	
	matrix `var' = [`var'_singletons,`var'_twins,`var'_all,`var'_hip1]
	matrix all = [all \ `var']
}
matrix all = all[2...,1...]
matrix all = [ J(5,11,.)  \ all[1..8,1...] \ J(2,11,.) \ all[9..13,1...] \ J(1,11,.) \ all[14..18,1...] \ J(1,11,.) \ all[19...,1...]]


clear
svmat all
gen   n = _n
// format
foreach var of varlist all* {
	gen    `var'and = "&" if n !=1
}

// header
gen all0and = "&" if n != 1
gen       all1_0 = "\begin{tabular}{ l ccccccccccc}  \toprule" if n == 1

replace all1_0   = " "                    	      		     if n == 2
replace all0and  = " & \multicolumn{1}{c}{(1)}"     if n == 2
replace all1and  = " & \multicolumn{1}{c}{(2)}"     if n == 2
replace all2and  = " & \multicolumn{1}{c}{(3)}"     if n == 2
replace all3and  = " & \multicolumn{1}{c}{(4)}"     if n == 2
replace all4and  = " & \multicolumn{1}{c}{(5)}"     if n == 2
replace all5and  = " & \multicolumn{1}{c}{(6)}"     if n == 2
replace all6and  = " & \multicolumn{1}{c}{(7)}"     if n == 2
replace all7and  = " & \multicolumn{1}{c}{(8)}"     if n == 2
replace all8and  = " & \multicolumn{1}{c}{(9)}"     if n == 2
replace all9and  = " & \multicolumn{1}{c}{(10)}"    if n == 2
replace all10and  = " & \multicolumn{1}{c}{(11)}"   if n == 2

replace all1_0   = " "                    	      		 if n == 3
replace all0and  = " & \multicolumn{3}{c}{Singletons}"   if n == 3
replace all1and  = "   "           						 if n == 3
replace all2and  = "   "           						 if n == 3
replace all3and  = " & \multicolumn{3}{c}{Twins}"        if n == 3
replace all4and  = "   "           						 if n == 3
replace all5and  = "   "           						 if n == 3
replace all6and  = " & \multicolumn{3}{c}{All}"          if n == 3
replace all7and  = "   "           						 if n == 3
replace all8and  = "   "           						 if n == 3
replace all9and  = " & \multicolumn{2}{c}{\footnotesize $ H_0: \Delta^\text{Singletons} = \Delta^\text{Twins} $}" if n == 3
replace all10and  = "   "           						 if n == 3

replace all1_0   = " "                    	      		  if n == 4
replace all0and  = " & \multicolumn{1}{c}{Control}"       if n == 4
replace all1and  = " & \multicolumn{1}{c}{$ \Delta $ }"   if n == 4
replace all2and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4
replace all3and  = " & \multicolumn{1}{c}{Control}"       if n == 4
replace all4and  = " & \multicolumn{1}{c}{$ \Delta $ }"   if n == 4
replace all5and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4
replace all6and  = " & \multicolumn{1}{c}{Control}"       if n == 4
replace all7and  = " & \multicolumn{1}{c}{$ \Delta $ }"   if n == 4
replace all8and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4
replace all9and  = " & \multicolumn{1}{c}{\footnotesize Difference}"    if n == 4
replace all10and = " & \multicolumn{1}{c}{\footnotesize $ p$-value }"   if n == 4

replace all1_0   = "  \multicolumn{10}{l}{\textbf{\textit{Panel a}. Cognitive}}"            				     if n == 5
replace all0and  = "   "           						      		                		   					 if n == 5
replace all1and  = "   "           						      		                		   					 if n == 5
replace all2and  = "   "           						      		                		   					 if n == 5
replace all3and  = "   "           						      		               			   					 if n == 5
replace all4and  = "   "           						      		               			   					 if n == 5
replace all5and  = "   "           						      		               			   					 if n == 5
replace all6and  = "   "           						      		                		   					 if n == 5
replace all7and  = "   "           						      		               			   					 if n == 5
replace all8and  = "   "           						      		               			   					 if n == 5
replace all9and  = "   "           						      		               			   					 if n == 5
replace all10and = "   "           						      		               			   					 if n == 5

replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Peabody Picture Vocabulary Test-R, Age 3}" 	   if n == 7  
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Stanford-Binet, Age 3}" 		 	               if n == 6 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Peabody Picture Vocabulary Test-R, Age 5}" 	   if n == 8 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Wechsler PPSI IQ Test, Age 5}" 		 		   if n == 9 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Peabody Picture Vocabulary Test-III, Age 8}"     if n == 10 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Wechsler ISC IQ Test, Age 8}"    		 		   if n == 11 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Peabody Picture Vocabulary Test-III, Age 18}"    if n == 12
replace all1_0  = "   \multicolumn{1}{l}{\hspace{2mm} Wechsler ASI IQ Test, Age 18}"         		   if n == 13

replace all1_0   = "  \multicolumn{10}{l}{\textbf{\textit{Panel b}. Non-Cognitive, Age 18}}"            	     if n == 14
replace all0and  = "   "           						      		                		   					 if n == 14
replace all1and  = "   "           						      		                		   					 if n == 14
replace all2and  = "   "           						      		                		   					 if n == 14
replace all3and  = "   "           						      		               			   					 if n == 14
replace all4and  = "   "           						      		               			   					 if n == 14
replace all5and  = "   "           						      		               			   					 if n == 14
replace all6and  = "   "           						      		                		   					 if n == 14
replace all7and  = "   "           						      		               			   					 if n == 14
replace all8and  = "   "           						      		               			   					 if n == 14
replace all9and  = "   "           						      		               			   					 if n == 14
replace all10and = "   "           						      		               			   					 if n == 14

replace all1_0   = "  \multicolumn{10}{l}{\hspace{2mm} \textbf{\textit{Panel b1}. Educational}}"                 if n == 15
replace all0and  = "   "           						      		                		   					 if n == 15
replace all1and  = "   "           						      		                		   					 if n == 15
replace all2and  = "   "           						      		                		   					 if n == 15
replace all3and  = "   "           						      		               			   					 if n == 15
replace all4and  = "   "           						      		               			   					 if n == 15
replace all5and  = "   "           						      		               			   					 if n == 15
replace all6and  = "   "           						      		                		   					 if n == 15
replace all7and  = "   "           						      		               			   					 if n == 15
replace all8and  = "   "           						      		               			   					 if n == 15
replace all9and  = "   "           						      		               			   					 if n == 15
replace all10and  = "   "           						      		               			   		         if n == 15


replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Never in Special Education}" 		   if n == 16  
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} No Reading Tutor}" 		 	       if n == 17
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} No Math Tutor}" 	                   if n == 18 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Took SAT or ACT}" 		 		   if n == 19
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Index: Average of Outcomes}"         if n == 20


replace all1_0   = "  \multicolumn{10}{l}{\hspace{2mm} \textbf{\textit{Panel b2}. Behavioral}}"                  if n == 21
replace all0and  = "   "           						      		                		   					 if n == 21
replace all1and  = "   "           						      		                		   					 if n == 21
replace all2and  = "   "           						      		                		   					 if n == 21
replace all3and  = "   "           						      		               			   					 if n == 21
replace all4and  = "   "           						      		               			   					 if n == 21
replace all5and  = "   "           						      		               			   					 if n == 21
replace all6and  = "   "           						      		                		   					 if n == 21
replace all7and  = "   "           						      		               			   					 if n == 21
replace all8and  = "   "           						      		               			   					 if n == 21
replace all9and  = "   "           						      		               			   					 if n == 21
replace all10and = "   "           						      		               			   					 if n == 21


replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Not a Smoker}" 		 		       if n == 22  
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Not Idle}" 		 	               if n == 23
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Not in Therapy}" 	                   if n == 24 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Not Teen Parent}" 		 		   if n == 25
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Index: Average of Outcomes}"         if n == 26

replace all1_0   = "  \multicolumn{10}{l}{\hspace{2mm} \textbf{\textit{Panel b3}. All}}"                         if n == 27
replace all0and  = "   "           						      		                		   					 if n == 27
replace all1and  = "   "           						      		                		   					 if n == 27
replace all2and  = "   "           						      		                		   					 if n == 27
replace all3and  = "   "           						      		               			   					 if n == 27
replace all4and  = "   "           						      		               			   					 if n == 27
replace all5and  = "   "           						      		               			   					 if n == 27
replace all6and  = "   "           						      		                		   					 if n == 27
replace all7and  = "   "           						      		               			   					 if n == 27
replace all8and  = "   "           						      		               			   					 if n == 27
replace all9and  = "   "           						      		               			   					 if n == 27
replace all10and = "   "           						      		               			   					 if n == 27

replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Average of Indices}" 		 		                         if n == 28 


// order
global orderlist all1_0 all0and
foreach num of numlist 1(1)11 {
	global orderlist $orderlist all`num' all`num'and
}
order $orderlist

// other formating
replace all11and = "\\   "
replace all11and = " \\ \midrule " 					       if n == 2  | n == 13
replace all11and = " \\ \hdashline " 					   if n == 26 | n == 20 | n == 14
replace all11and = " \\ \\"								   if n == 7 | n == 9 | n == 11 | n == 19 | n == 25
replace all11and = " \\ \cmidrule(l{.15cm}r{.15cm}){2-4} \cmidrule(l{.15cm}r{.15cm}){5-7} \cmidrule(l{.15cm}r{.15cm}){8-10} \cmidrule(l{.15cm}r{.15cm}){11-12}" if n == 3
replace all11and = " \\ \midrule " 		                   if n == 4
replace all11and = " \\ \bottomrule \end{tabular}"          if n == 28
replace all11and = " " 								       if n == 1

// put together in string
gen all = " "
foreach num of numlist 1(1)11 {
	tostring all`num'  , replace force format(%15.2fc)
	replace  all`num'  = "" if all`num'  == "."
}

global orderin all1_0 all0and
foreach num of numlist 1(1)11 {
	global orderin $orderin all`num' all`num'and 
}
global orderin $orderin all`num'
order $orderin n

foreach var of varlist all1_0-all11and {	
	replace  all = all + `var'
	replace  all`num' = " " if all`num' == "."
}

// save in tex format
keep all
cd $output
outsheet using skillsdescribe.tex, noquote nonames replace
